字符串加后"\0"与不加的区别?

来源:百度知道 编辑:UC知道 时间:2024/06/07 09:36:40
如题,在一个字符数组中,加它与不加它不是可以输出相同的结果吗?那加了还有什么区别呢?

有可能相同,有可能不同,有可能崩溃。如果对于内存未做初始化,那么内存内的值是随机的。它可能包含'\0'。而C通过判断'\0'来辨识字符串的结束。系统读取字符串,它只是从字符数组的开始,一直往后找,一直找到'\0'为止。如果你不加,系统只好再往后找,一直找到'\0'为止。

如果在你字符串之后正好有个'\0',那字符串就会被正确读出。如果字符串后面隔了一些字节后有'\0',那不用讲系统除了你的字符串还会读出一堆乱码。如果系统一直往后找,根本找不到'\0',一直读到了操作系统区(“禁区”),那程序就会崩溃,如果在Windows上运行,那一定会报告那句经典的微软名言:“该程序执行了非法操作,即将关闭。如果问题依然存在,请与程序的供应商联系”。现在明白了吧,供应商就是你了。

"abc\0"
"abc"
是不同的.
前者多占一字节,在UNICODE环境下更健康

\0是字符串结束的标志
如果不加\0,用VC编译,会出一堆的“烫”字

不可能输出相同的结果、因为输出是判断字符是否为"\0"结束的